package com.lengchangjing.BehavioralPatterns.InterpreterPattern.example;

/**
 * 减法表达式，是非终结符表达式（NonterminalExpression）。
 */
public class Subtract extends Expression {

    // 被减数、减数
    private Expression minuend, subtrahend;

    /**
     * 构造器
     *
     * @param minuend    被减数
     * @param subtrahend 减数
     */
    public Subtract(Expression minuend, Expression subtrahend) {
        this.minuend = minuend;
        this.subtrahend = subtrahend;
    }

    /**
     * 减法语法解释
     *
     * @param ctx 上下文
     * @return 减法计算结果
     */
    @Override
    public int interpret(Context ctx) {
        return minuend.interpret(ctx) - subtrahend.interpret(ctx);
    }
}
